package priorityqueue;

import java.util.Comparator;
import java.util.PriorityQueue;

//class IntComparator implements Comparator<Integer> {
//    @Override
//    public int compare(Integer o1, Integer o2) {
//        //此处是自定义的比较规则,原来的比较规则就不要了
//        //如果判定o1比o2小,就返回一个 < 0的整数
//        //如果判定o1比o2大,就返回一个 > 0的整数
//        //如果判定o1与o2相等,就返回一个=0的整数
//        //return o2 - o1; 就是定义了一个大堆的比较规则
//        //return o1 - o2; 就是定义了一个小堆的比较规则
//        //不用刻意的去记忆,只要每个都试一下就行了
//        return o2 - o1;
//    }
//}


public class Test2 {
    public static void main(String[] args) {
        PriorityQueue<Integer> queue = new PriorityQueue<>(new Comparator<Integer>(){
            //直接在这里使用匿名内部类也是可以的,就无需再新创建一个类,因为这个类一般也是只用一次
            //这个匿名内部类实现了Comparator接口,重写了Comparator的compare方法,创建了该匿名内部类的实例

            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });
        //需要创建上述比较器的实例,通过构造方法传给优先级队列
        queue.add(5);
        queue.add(3);
        queue.add(1);
        queue.add(4);
        queue.add(2);

        while(!queue.isEmpty()){
            System.out.println(queue.poll());
        }
    }
}
